package com.shure.modules.llm.controller;

import java.util.List;
import java.util.Map;

import org.springframework.ai.document.Document;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.embedding.EmbeddingResponse;
import org.springframework.ai.vectorstore.SearchRequest;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.ai.vectorstore.redis.RedisVectorStore;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EmbeddingController {

    private final EmbeddingModel embeddingModel;
    private final VectorStore vectorStore;

    @Autowired
    public EmbeddingController(EmbeddingModel embeddingModel, RedisVectorStore vectorStore) {
        this.embeddingModel = embeddingModel;
        this.vectorStore = vectorStore;
    }

    @GetMapping("/ai/embedding")
    public Map embed(@RequestParam("query") String query) {
        // EmbeddingResponse embeddingResponse = this.embeddingModel.embedForResponse(List.of(message));
        // return Map.of("embedding", embeddingResponse);

        List <Document> documents = List.of(
            new Document("有段时间没写钉钉了。不过我一直在关注，没记错的话，他们最近也没开发布会，创始人无招回来后，听说一直在带着团队对产品进行走查、改造。一个功能一个功能的过，确保用户体验和交互是最顺畅自然的，而非陷入到ToB 产品复杂呆板的怪圈之中。这过程中，钉钉还拆了不少付费墙，比如我最喜欢的一个产品：多维表。最近钉钉在多维表这块动静挺大。一是所有产品功能都已经免费开放。据我所知，钉钉多维表是行业内同类产品中，唯一一个彻底免费开放的。这对于用户来说，也是好事，因为这几年，多维表已经逐步成为企业协作的重要补充工具。二是明显在加码电商行业。我猜测钉钉现在正在快速推动多维表的行业化应用。它一口气上线了100 多个模板，覆盖了进销存、销售、利润管理等常规业务场景，也包括像多平台店铺评价、店铺DSR、直播间货品管理这些传统软件少难覆盖，但又是电商刚需的细分场景。与市场上其他同类产品相比，我觉得钉钉做多维表的核心优势，还是在阿里自己的电商体系。行业里最懂电商的公司一定是阿里，多维表天然就带着阿里的行业 Know-How。而电商，恰恰又是多维表这个品类目前最大最丰富的落地场景。"),
            new Document("百度官方把这叫做：智能框。是的，百度的搜索框只是变大了一点点，但这个改变也是巨大的，是对自己的革新，也是让 AI 能力落入寻常百姓家的开始。作为国内老百姓最常用的搜索工具，百度搜索“大”一点，相当于把整个 AI 在国内的使用进程往前推了一大步。这非常重要。这个又大又新的智能框支持超长文本搜索、文件上传搜索，支持音频和图片等多种输入方式，用户可以通过自然语言描述复杂需求，上传图片或文档进行分析，接入了 MCP 之后，甚至可以直接调用各种 AI Agent 完成特定任务。多模态输入能力的提升，实质上是在降低了老百姓的使用门槛，让搜索从“关键词匹配”升级为“需求理解”，我知道你要干嘛，并且帮你把任务完成。我非常高兴见证了这个变革的进程。6 月初作为老用户和产品人受邀参加了百度搜索的产品研讨会，当时还在墨问记录了一下。在 AI 时代，百度这种搜索巨头能够持续倾听用户的声音，并持续变革，我还是挺开心的。那时候我就知道了，百度正在构建一个 AI 重构的搜索计划，希望在 AI 时代能让更多普通人以最自然的方式表达需求，并获得全方位、有用的答案，最终的目标就是实现从信息获取到任务完成的无缝连接。我还根据自己的使用方式聊了一些产品建议。没想到才一个月多，多模态的 AI 搜索新版本就出来了。AI 时代，唯快不破。1百度为什么要变？我们常说 AI 搜索，尤其是 Perplexity 公司要用 AI 搜索颠覆 Google，那什么是 AI 搜索？简单来说，AI 搜索就是指在传统搜索引擎的基础上，加入人工智能（大语言模型），使得搜索引擎能够更好地理解用户的意图，并给出更准确、更个性化的答案。与传统的关键词匹配不同，AI 搜索可以理解复杂的问题、上下文和语境，甚至能直接生成答案，而不仅仅是返回一堆相关网页。我现在怎么使用搜索呢？我想看一部电影的各类影评，使用百度和 Google 的传统搜索。想查一个概念或名词，比如跑步的配速怎么计算的，直接问 AI。我想找一个解决方案，需要和 AI 进行多轮对话才能找到答案。由于大模型本身存在幻觉，如果是重要的结果，除了 AI 搜索，我还会通过传统搜索方式找到官网信源，多方对比验证，确保不会出现常识性错误或信源错误，等等。你看，为了完成我的日常搜索工作，我会在传统搜索和 AI 搜索之间反复横跳，一会是主动搜索，一会被动接受，一会寻求解决方案，一会希望 AI 帮我完成任务等等。这些正在逐步变成普通人日常的搜索行为。这意味在传统搜索引擎主导互联网信息获取近二十年后，一场深刻的变革正在发生。在百度这个新的 All in one 的入口里，我们既可以进行传统搜索，又可以进行 AI 总结和多模态搜索，同时可以实现专项 AI 功能使用，比如写作、阅读、做 PPT 等。这是百度搜索页近十年来的最大改版，从一个普通用户的视角去看，这不仅仅是一次产品升级，更展示了百度对“搜索”本质的重新定义。从简单的“百度一下，你就知道”，到如今的智能化任务完成平台，百度正在用 AI 技术重构搜索的边界，让用户从被动的信息接受者转变为主动的需求实现者，打个比方，新的百度搜索就像是“AI 调度中心”，搜索框变成了“总机”和“调度员”。这种主动变革，折射出 AI 时代用户需求的根本性转变，以及传统互联网巨头在技术浪潮中的主动求变与自我革新。2除了搜索框，这次百度还升级和推出了很多功能，说几个我个人觉得青睐的。输出端重构：百看的内容化探索在百度搜索的输出端，百度推出了“百看”，这代表了百度搜索结果展现方式的根本性变革。通过 AI 大模型重新组织搜索结果，将分散的信息整合为结构化的答案，支持图片、视频、笔记、图表等多格式混合展现。更重要的是，百看嵌入了智能体等交互元素，让搜索结果不再是静态的信息展示，而是动态的服务入口。当用户搜索“附近的餐厅”时，传统搜索返回的是餐厅网站链接，百看直接提供餐厅的距离、评分、特色菜品、实时排队情况等结构化信息，甚至支持直接预订、导航等服务调用。这种从“信息聚合”到“服务聚合”的转变，体现了搜索边界的持续扩展。"),
            new Document("周三，出门问问发布了全新的 AI 软硬件结合产品：TicNote。TicNote 是一款卡片式录音笔，只有三张公交卡的厚度。配合磁吸皮套，可以贴合到手机上，这样就很巧妙的解决了录音笔还得单独携带的问题。TicNote 卡片的顶端左右各有一个按钮，分别用于切换录音模式和录音状态，中间是一块简洁的小屏幕。下方卡身部分布满了黑色流畅的线条，整体设计显得更简洁利落，科技感十足，没有一丝多余的装饰。卡片的重量只有 29g，拿到手里，很有质感。同时，配备 470mAh 的电池，可以连续录音 20 小时以上，而且支持快充，1.5 小时左右就可以充满电。内存 64GB，日常的录音需求肯定是够用了。硬件只是前菜，TicNote 真正的亮点，在于内置的自研 AI Agent Shadow AI。软硬件一体化，加上 AI 能力，就能够把录音、转写、内容整理、要点提炼这一整套流程全部打通。实际体验下来，我的感觉就是很方便，很顺畅。终于不需要再来回倒腾音频。很多人可能觉得，录音笔是个很小众的需求。其实在用上 TicNote 之前，我也是这么认为的。毕竟这几年，手机自带的录音功能已经能覆盖大多数场景。但真正深度体验了两天 TicNote 后，我发现事情可能会出现新的转折。AI Agent 加持的录音笔，已经不仅仅是传统的录音笔，它有机会真正成为知识工作者的第二大脑。通过轻便磁吸的卡片式录音设备，我可以随时随地把工作和生活中的重要信息收集起来，不管是会议、访谈，还是电话录音。录完之后，音频可以作为输入直接添加进知识库。是的，TicNote 还专门设计了 AI 知识库功能。录音内容可以直接沉淀到知识库里，除此之外，用户也可以上传 PDF、Word 等各类文档，把不同来源的信息都聚合在一起。所以，与其说 TicNote 是一款录音设备，我更愿意把它看作一款 AI 知识库产品，录音只是其中的一个重要场景。最近我喜欢研究人形机器人相关的公司进展，总感觉这个技术在接下来几年会成熟，而它一旦成熟，我觉得人们的生活方式会发生翻天覆地的变化。刚刚，我就在 TicNote 的控制台建了一个人形机器人的知识库，并把最近的一些资料都上传了进去。")
        );

        // Add the documents to Redis
        vectorStore.add(documents);

        // Retrieve documents similar to a query
        List<Document> results = this.vectorStore.similaritySearch(SearchRequest.builder().query(query).topK(5).build());
        return Map.of("results", results);
    }
}
